// 商品详情页
const db = wx.cloud.database()
// 获取应用实例
const app = getApp()

Page({
  data: {
    // 商品ID
    id: null,
    // 商品信息
    product: null,
    // 是否显示规格弹窗
    showSpecs: false,
    // 选择的规格
    selectedSpecs: {},
    // 规格文本描述
    specText: '请选择规格',
    // 选择的规格价格
    selectedSpecPrice: 0,
    // 选择的规格库存
    selectedSpecStock: 0,
    // 购买数量
    quantity: 1,
    // 操作类型（加入购物车/立即购买）
    actionType: 'addToCart',
    // 是否已收藏
    isFavorite: false,
    // 购物车商品数量
    cartCount: 0,
    // 相关知识
    relatedKnowledge: [],
    // 推荐商品
    recommendProducts: [],
    // 规格弹窗显示状态
    isSkuPopupShow: false,
    // 选中的SKU索引
    selectedSkuIndex: -1,
    // 选中的SKU名称
    selectedSku: '',
    // 当前操作（加入购物车/立即购买）
    currentAction: 'addToCart',
    // 商品规格弹窗
    skuPopupVisible: false,
    // 当前选择的规格
    currentSku: null,
    // 是否展示全部评价
    showAllComments: false,
    // 图片轮播配置
    swiperCurrent: 0,
    // 是否展开详情
    isDetailExpanded: false,
    // 购买类型 'cart'加入购物车, 'buy'立即购买
    buyType: 'cart',
    // 评价数据
    comments: []
  },

  onLoad: function(options) {
    if (options.id) {
      this.setData({
        id: options.id,
        selectedSkuIndex: -1 // 初始化为-1表示未选择
      })
      // 获取商品详情
      this.loadProductDetail(options.id)
      // 获取相关知识
      this.getRelatedKnowledge(options.id)
      // 获取推荐商品
      this.getRecommendProducts(options.id)
      // 检查是否收藏
      this.checkFavorite(options.id)
      // 加载评价数据
      this.loadComments(options.id)
    }
  },
  
  onShow: function() {
    // 更新购物车数量
    this.updateCartCount()
  },
  
  // 获取商品详情
  loadProductDetail: function(id) {
    wx.showLoading({
      title: '加载中',
    });

    // 从云数据库获取商品详情
    db.collection('products').doc(id).get().then(res => {
      console.log('成功获取商品数据：', res.data);
      if (!res.data) {
        wx.showToast({
          title: '商品不存在',
          icon: 'none'
        });
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
        return;
      }

      // 处理商品数据
      const product = res.data;
      
      // 如果没有图片，设置默认图片
      if (!product.images || product.images.length === 0) {
        product.images = [product.imageUrl || 'https://img01.yzcdn.cn/vant/cat.jpeg'];
      }
      
      // 如果没有设置SKU，添加默认SKU
      if (!product.skus || product.skus.length === 0) {
        product.skus = [{
          id: 1,
          name: '默认',
          price: product.price,
          specialPrice: product.specialPrice,
          stock: 999
        }];
      }

      this.setData({
        product: product,
        currentSku: product.skus[0]
      });

      wx.hideLoading();
    }).catch(err => {
      console.error('获取商品详情失败', err);
      // 获取失败时使用模拟数据
      const product = {
        _id: id,
        name: '时尚连衣裙',
        price: 299,
        specialPrice: 199,
        brief: '2023新款春季时尚连衣裙，面料舒适，设计简约大方',
        detail: '<p>商品详情内容</p><p>尺码信息：S、M、L、XL</p><p>材质：聚酯纤维</p>',
        images: [
          'https://img01.yzcdn.cn/vant/cat.jpeg',
          'https://img01.yzcdn.cn/vant/cat.jpeg',
          'https://img01.yzcdn.cn/vant/cat.jpeg'
        ],
        soldCount: 352,
        stock: 999,
        services: ['7天无理由退换', '正品保证', '48小时发货'],
        skus: [
          { id: 1, name: 'S码', price: 299, specialPrice: 199, stock: 100 },
          { id: 2, name: 'M码', price: 299, specialPrice: 199, stock: 200 },
          { id: 3, name: 'L码', price: 299, specialPrice: 199, stock: 150 },
          { id: 4, name: 'XL码', price: 299, specialPrice: 199, stock: 80 }
        ]
      };

      this.setData({
        product: product,
        currentSku: product.skus[0]
      });
      
      wx.hideLoading();
      wx.showToast({
        title: '使用演示数据',
        icon: 'none'
      });
    });
  },
  
  // 获取相关知识
  getRelatedKnowledge: function(productId) {
    // 从云数据库获取相关知识文章
    db.collection('articles')
      .where({
        relatedProductIds: db.command.all([productId])
      })
      .limit(5)
      .get()
      .then(res => {
        this.setData({
          relatedKnowledge: res.data.map(item => ({
            id: item._id,
            title: item.title,
            summary: item.content.replace(/<[^>]+>/g, '').substring(0, 60) + '...',
            cover: item.coverImage,
            viewCount: item.viewCount || 0,
            commentCount: 0 // 可以后续添加评论计数
          }))
        })
      })
      .catch(err => {
        console.error('获取相关知识失败', err)
      })
  },
  
  // 获取推荐商品
  getRecommendProducts: function(productId) {
    // 从云数据库获取相同分类的其他产品作为推荐
    db.collection('products')
      .doc(productId)
      .get()
      .then(res => {
        if (!res.data) return
        
        const categoryId = res.data.categoryId
        
        // 获取同类别商品
        return db.collection('products')
          .where({
            categoryId: categoryId,
            _id: db.command.neq(productId) // 排除当前商品
          })
          .limit(4)
          .orderBy('soldCount', 'desc')
          .get()
      })
      .then(res => {
        if (!res || !res.data) return
        
        this.setData({
          recommendProducts: res.data.map(item => ({
            id: item._id,
            name: item.name,
            price: item.price,
            specialPrice: item.specialPrice,
            imageUrl: (item.images && item.images.length > 0) ? item.images[0] : null,
            soldCount: item.soldCount || 0
          }))
        })
      })
      .catch(err => {
        console.error('获取推荐商品失败', err)
      })
  },
  
  // 检查是否收藏
  checkFavorite: function(productId) {
    // 检查用户是否登录
    const userId = wx.getStorageSync('userId')
    if (!userId) {
      this.setData({ isFavorite: false })
      return
    }
    
    // 从用户收藏表查询
    db.collection('user_favorites')
      .where({
        userId: userId,
        itemId: productId,
        type: 'product'
      })
      .count()
      .then(res => {
        this.setData({
          isFavorite: res.total > 0
        })
      })
      .catch(err => {
        console.error('检查收藏状态失败', err)
        this.setData({ isFavorite: false })
      })
  },
  
  // 更新购物车数量
  updateCartCount: function() {
    // 从本地存储读取购物车
    const cart = wx.getStorageSync('cart') || []
    let cartCount = 0
    
    cart.forEach(item => {
      cartCount += (item.quantity || 0)
    })
    
    this.setData({
      cartCount: cartCount
    })
  },
  
  // 图片预览
  previewImage: function(e) {
    const index = e.currentTarget.dataset.index
    const images = this.data.product.images
    
    wx.previewImage({
      current: images[index],
      urls: images
    })
  },
  
  // 评价图片预览
  previewReviewImage: function(e) {
    const { index, images } = e.currentTarget.dataset
    
    wx.previewImage({
      current: images[index],
      urls: images
    })
  },
  
  // 显示规格弹窗
  showSpecsPopup: function(e) {
    const actionType = e.currentTarget.dataset.action || 'addToCart'
    
    this.setData({
      showSpecs: true,
      actionType
    })
  },
  
  // 隐藏规格弹窗
  hideSpecsPopup: function() {
    this.setData({
      showSpecs: false
    })
  },
  
  // 选择规格
  selectSpec: function(e) {
    const { groupName, optionValue, optionStock } = e.currentTarget.dataset
    
    // 如果库存为0，不可选
    if (optionStock <= 0) return
    
    // 更新选中的规格
    const selectedSpecs = { ...this.data.selectedSpecs }
    selectedSpecs[groupName] = optionValue
    
    // 生成规格文本
    let specText = '已选: '
    let isComplete = true
    
    // 遍历所有规格组，检查是否全部选择完毕
    for (let specGroup of this.data.product.specs) {
      if (selectedSpecs[specGroup.name]) {
        specText += `${specGroup.name}:${selectedSpecs[specGroup.name]} `
      } else {
        isComplete = false
      }
    }
    
    if (!isComplete) {
      specText = '请选择: '
      for (let specGroup of this.data.product.specs) {
        if (!selectedSpecs[specGroup.name]) {
          specText += `${specGroup.name} `
        }
      }
    }
    
    this.setData({
      selectedSpecs,
      specText,
      // 这里应该根据选择的规格组合计算出对应的价格和库存
      // 实际项目中可能需要从SKU表中查询
      selectedSpecPrice: this.data.product.specialPrice || this.data.product.price,
      selectedSpecStock: this.data.product.totalStock
    })
  },
  
  // 增加数量
  increaseQuantity: function() {
    const { quantity, product } = this.data;
    if (quantity < (product.stock || 999)) {
      this.setData({
        quantity: quantity + 1
      });
    }
  },
  
  // 减少数量
  decreaseQuantity: function() {
    const { quantity } = this.data;
    if (quantity > 1) {
      this.setData({
        quantity: quantity - 1
      });
    }
  },
  
  // 输入数量
  onQuantityChange: function(e) {
    let quantity = parseInt(e.detail.value);
    const { product } = this.data;
    const maxStock = product.stock || 999;
    
    if (isNaN(quantity) || quantity < 1) {
      quantity = 1;
    } else if (quantity > maxStock) {
      quantity = maxStock;
    }
    
    this.setData({
      quantity: quantity
    });
  },
  
  // 确认规格选择
  confirmSpecs: function() {
    // 检查是否已选择所有规格
    const specGroups = this.data.product.specs || []
    for (let specGroup of specGroups) {
      if (!this.data.selectedSpecs[specGroup.name]) {
        wx.showToast({
          title: `请选择${specGroup.name}`,
          icon: 'none'
        })
        return
      }
    }
    
    // 检查用户是否登录
    if (!app.globalData.isLogin) {
      wx.showModal({
        title: '提示',
        content: '请先登录后再操作',
        confirmText: '去登录',
        success: (res) => {
          if (res.confirm) {
            wx.switchTab({
              url: '/pages/profile/profile'
            })
          }
        }
      })
      return
    }
    
    // 根据操作类型执行不同逻辑
    if (this.data.actionType === 'addToCart') {
      this.addToCart()
    } else if (this.data.actionType === 'buyNow') {
      this.buyNow()
    }
    
    // 隐藏弹窗
    this.hideSpecsPopup()
  },
  
  // 立即购买
  buyNow: function() {
    if (!app.globalData.isLogin) {
      wx.navigateTo({
        url: '/pages/login/login'
      });
      return;
    }
    
    const selectedSpec = this.getSelectedSpec();
    if (!selectedSpec) {
      wx.showToast({
        title: '请选择规格',
        icon: 'none'
      });
      return;
    }
    
    const product = this.data.product;
    const checkoutItem = {
      id: product._id,
      name: product.name,
      image: product.images && product.images[0],
      price: selectedSpec.price || product.price,
      specs: selectedSpec.name,
      quantity: this.data.quantity,
      selected: true
    };
    
    // 保存到全局数据和本地存储
    const checkoutItems = [checkoutItem];
    app.globalData.checkoutItems = checkoutItems;
    wx.setStorageSync('checkoutItems', checkoutItems);
    
    console.log('立即购买商品:', checkoutItems);
    
    // 关闭弹窗
    if (this.data.isSkuPopupShow) {
      this.hideSkuPopup();
    }
    if (this.data.showSpecs) {
      this.hideSpecsPopup();
    }
    
    // 跳转到结算页面
    wx.navigateTo({
      url: '/pages/checkout/checkout?from=buy'
    });
  },
  
  // 切换收藏状态
  toggleFavorite: function() {
    const userId = wx.getStorageSync('userId')
    
    // 检查用户是否登录
    if (!userId) {
      wx.showModal({
        title: '提示',
        content: '请先登录后再操作',
        confirmText: '去登录',
        success: (res) => {
          if (res.confirm) {
            wx.switchTab({
              url: '/pages/profile/profile'
            })
          }
        }
      })
      return
    }
    
    const isFavorite = !this.data.isFavorite
    this.setData({ isFavorite })
    
    if (isFavorite) {
      // 添加收藏
      db.collection('user_favorites').add({
        data: {
          userId: userId,
          itemId: this.data.id,
          type: 'product',
          createTime: db.serverDate()
        }
      }).then(() => {
        wx.showToast({
          title: '收藏成功',
          icon: 'success'
        })
      }).catch(err => {
        console.error('收藏失败', err)
        this.setData({ isFavorite: !isFavorite })
      })
    } else {
      // 取消收藏
      db.collection('user_favorites')
        .where({
          userId: userId,
          itemId: this.data.id,
          type: 'product'
        })
        .remove()
        .then(() => {
          wx.showToast({
            title: '已取消收藏',
            icon: 'success'
          })
        }).catch(err => {
          console.error('取消收藏失败', err)
          this.setData({ isFavorite: !isFavorite })
        })
    }
  },
  
  // 跳转到首页
  navigateToHome: function() {
    wx.switchTab({
      url: '/pages/index/index'
    })
  },
  
  // 跳转到购物车
  navigateToCart: function() {
    wx.switchTab({
      url: '/pages/cart/cart'
    })
  },
  
  // 跳转到评价列表
  navigateToReviews: function() {
    wx.navigateTo({
      url: `/pages/reviews/reviews?id=${this.data.id}`
    })
  },
  
  // 跳转到知识详情
  navigateToKnowledge: function(e) {
    const { id } = e.currentTarget.dataset
    wx.navigateTo({
      url: `/pages/knowledge-detail/knowledge-detail?id=${id}`
    })
  },
  
  // 跳转到商品详情
  navigateToProduct: function(e) {
    const { id } = e.currentTarget.dataset
    // 如果是当前商品，不跳转
    if (id == this.data.id) return
    
    wx.navigateTo({
      url: `/pages/product/product?id=${id}`
    })
  },
  
  // 分享商品
  onShareAppMessage: function() {
    const product = this.data.product || {}
    return {
      title: product.name || '精选商品',
      path: `/pages/product/product?id=${this.data.id}`,
      imageUrl: product.images && product.images.length > 0 ? product.images[0] : ''
    }
  },
  
  // 分享到朋友圈
  onShareTimeline: function() {
    const product = this.data.product || {}
    return {
      title: product.name || '精选商品',
      query: `id=${this.data.id}`,
      imageUrl: product.images && product.images.length > 0 ? product.images[0] : ''
    }
  },
  
  // 显示规格选择弹窗
  showSkuPopup: function(e) {
    const action = e.currentTarget.dataset.action || 'addToCart'; // 默认为加入购物车
    this.setData({
      isSkuPopupShow: true,
      currentAction: action
    });
  },

  // 隐藏规格选择弹窗
  hideSkuPopup: function() {
    this.setData({
      isSkuPopupShow: false
    });
  },

  // 选择规格
  selectSku: function(e) {
    const index = e.currentTarget.dataset.index;
    const value = e.currentTarget.dataset.value;
    
    console.log('选择规格：', index, value);
    
    // 更新选中的规格索引和值
    this.setData({
      selectedSkuIndex: index,
      selectedSku: value
    });
  },

  // 获取已选择的规格
  getSelectedSpec: function() {
    // 如果使用了SKU选择
    if (this.data.selectedSkuIndex >= 0 && this.data.product.skus) {
      return this.data.product.skus[this.data.selectedSkuIndex];
    }
    
    // 如果使用了规格组合选择
    if (this.data.product.specs && Object.keys(this.data.selectedSpecs).length > 0) {
      // 实际项目中应该根据规格组合查找对应的SKU
      return {
        _id: '1', // 临时ID
        name: this.data.specText,
        price: this.data.selectedSpecPrice || this.data.product.price,
        stock: this.data.selectedSpecStock || this.data.product.stock
      };
    }
    
    // 如果没有选择规格，但商品有默认规格
    if (this.data.product.skus && this.data.product.skus.length > 0) {
      return this.data.product.skus[0];
    }
    
    return null;
  },

  // 添加到购物车
  addToCart: function() {
    if (!app.globalData.isLogin) {
      wx.navigateTo({
        url: '/pages/login/login'
      });
      return;
    }

    const selectedSpec = this.getSelectedSpec();
    if (!selectedSpec) {
      wx.showToast({
        title: '请选择规格',
        icon: 'none'
      });
      return;
    }

    const product = this.data.product;
    const cartItem = {
      id: product._id, // 重要：与checkout页面期望的id字段匹配
      productId: product._id,
      name: product.name,
      price: selectedSpec.price || product.price,
      image: product.images && product.images[0],
      specs: selectedSpec.name,
      quantity: this.data.quantity,
      selected: true
    };

    // 获取购物车列表
    let cart = wx.getStorageSync('cart') || [];
    
    // 检查是否已存在相同商品
    const existingIndex = cart.findIndex(item => 
      item.id === cartItem.id && item.specs === cartItem.specs
    );
    
    if (existingIndex > -1) {
      // 如果已存在，更新数量
      cart[existingIndex].quantity += cartItem.quantity;
    } else {
      // 如果不存在，添加到购物车
      cart.push(cartItem);
    }

    // 同步更新本地存储和全局变量
    wx.setStorageSync('cart', cart);
    app.globalData.cartList = cart;

    wx.showToast({
      title: '已加入购物车',
      icon: 'success'
    });
  },

  // 检查是否选择了规格
  checkSkuSelected: function() {
    if (!this.data.selectedSku) {
      wx.showToast({
        title: '请选择规格',
        icon: 'none'
      });
      return false;
    }
    return true;
  },
  
  // 跳转到购物车页面
  goToCart: function() {
    wx.switchTab({
      url: '/pages/cart/cart'
    });
  },
  
  // 跳转到首页
  goToHome: function() {
    wx.switchTab({
      url: '/pages/index/index'
    });
  },
  
  // 预览图片
  previewImage: function(e) {
    const { url } = e.currentTarget.dataset;
    const { product } = this.data;
    
    wx.previewImage({
      current: url,
      urls: product.images
    });
  },

  // 加载评价数据
  loadComments: function(productId) {
    // 从云数据库获取评价数据
    db.collection('comments')
      .where({ productId: productId })
      .limit(5)
      .get()
      .then(res => {
        this.setData({
          comments: res.data || []
        });
      })
      .catch(err => {
        console.error('获取评价失败', err);
      });
  },

  // 查看更多评价
  viewMoreComments: function() {
    this.setData({
      showAllComments: true
    });
    
    // 加载全部评价
    db.collection('comments')
      .where({ productId: this.data.id })
      .get()
      .then(res => {
        this.setData({
          comments: res.data || []
        });
      })
      .catch(err => {
        console.error('获取全部评价失败', err);
      });
  },

  // 轮播图切换
  swiperChange: function(e) {
    this.setData({
      swiperCurrent: e.detail.current
    });
  },

  // 展开/收起详情
  toggleDetail: function() {
    this.setData({
      isDetailExpanded: !this.data.isDetailExpanded
    });
  },
}) 